import "./index.css"
import React, { Component } from 'react'
import PubSub from 'pubsub-js'

export default class List extends Component {
  state = {           // 初始化状态
    users: [],        // users初始值为数组
    isFirst: true,    // 是否为第一次打开页面
    isLoading: false, // 标识是否处于加载中
    err: ''           // 存储请求相关的错误信息
  }

  componentDidMount() {
    this.token = PubSub.subscribe('stateObj', (_, data) => {
      console.log(data);
      this.setState(data);
    });
  }

  componentWillUnmount() {
    PubSub.unsubscribe(this.token)
  }

  render() {
    const { users, isFirst, isLoading, err } = this.state

    return (
      <div className=''>
        {
          isFirst ? <h2>欢迎使用，请输入关键字，随后点击搜索</h2> :
          isLoading ? <h2>加载中...</h2> :
          err ? <h2 style={{color: "red"}}>{err.message}</h2> :
          users.map((user) => {
            return (
              <div className='card' key={user.id}>
                <a href={user.url} target="_blank" rel="noreferrer">
                  <img src={user.cover} alt={user.title} style={{ width: "100px" }} />
                </a>
                <p className='card-text'>{user.title}</p>
              </div>
            )
          })
        }
      </div>
    )
  }
}
